package com.tieshan.smartwindow.app

import android.app.Application
import android.content.Context
import android.util.Log
import com.bumptech.glide.Glide
import com.google.gson.reflect.TypeToken
import com.google.gson.stream.JsonToken
import com.hjq.gson.factory.GsonFactory
import com.hjq.http.EasyConfig
import com.hjq.http.config.IRequestApi
import com.hjq.http.model.HttpHeaders
import com.hjq.http.model.HttpParams
import com.hjq.toast.ToastUtils
import com.pgyer.pgyersdk.PgyerSDKManager
import com.tencent.bugly.crashreport.CrashReport
import com.tencent.mmkv.MMKV
import com.tieshan.smartwindow.manager.ActivityManager
import com.tieshan.smartwindow.other.*
import okhttp3.OkHttpClient
import timber.log.Timber
import java.io.DataOutputStream
import java.io.IOException
import java.lang.Exception
import java.text.DecimalFormat
import java.util.*

/**
 *    author : Hleo
 *    time   : 2022-2-9 11:56:45
 *    desc   : 应用入口
 */
class AppApplication : Application() {

//    @Log("启动耗时")
    override fun onCreate() {
        super.onCreate()
    initSdk(this)
    }


    override fun attachBaseContext(base: Context?) {
        super.attachBaseContext(base)
        initPagerSdk(this)
    }

    private fun initPagerSdk(application: Application){
        PgyerSDKManager
            .Init()
            .setContext(application)
            .start();
    }


    override fun onLowMemory() {
        super.onLowMemory()
        // 清理所有图片内存缓存
        Glide.get(this).onLowMemory()
    }

    override fun onTrimMemory(level: Int) {
        super.onTrimMemory(level)
        // 根据手机内存剩余情况清理图片内存缓存
        Glide.get(this).onTrimMemory(level)
    }

    companion object {
        var app:AppApplication ?=null
        /**
         * 初始化一些第三方框架
         */
        fun initSdk(application: Application) {
            app=application as AppApplication
            // 初始化吐司
            ToastUtils.init(application, ToastStyle())
            // 设置调试模式
            ToastUtils.setDebugMode(AppConfig.isDebug())
            // 设置 Toast 拦截器
            ToastUtils.setInterceptor(ToastLogInterceptor())

//            // 本地异常捕捉
            CrashHandler.register(application)

//            // Bugly 异常捕捉
            CrashReport.initCrashReport(application, AppConfig.getBuglyId(), AppConfig.isDebug())

            // Activity 栈管理初始化
            ActivityManager.getInstance().init(application)

            // MMKV 初始化
            MMKV.initialize(application)

            // 设置 Json 解析容错监听
            GsonFactory.setJsonCallback { typeToken: TypeToken<*>, fieldName: String?, jsonToken: JsonToken ->
                // 上报到 Bugly 错误列表
                CrashReport.postCatchedException(IllegalArgumentException("类型解析异常：$typeToken#$fieldName，后台返回的类型为：$jsonToken"))
            }

            // 初始化日志打印
//            if (AppConfig.isLogEnable()) {
                Timber.plant(DebugLoggerTree())
//            }
        }



    }
}